package com.dlws.modules.productinfo.controller;

import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.dlws.common.utils.Constants;
import com.dlws.common.utils.DateUtils;
import com.dlws.common.web.BaseController;
import com.dlws.modules.city.entity.City;
import com.dlws.modules.city.service.CityService;
import com.dlws.modules.productinfo.entity.ProductInfo;
import com.dlws.modules.productinfo.entity.ProductInfoPageVo;
import com.dlws.modules.productinfo.service.ProductInfoService;
import com.page.Pagination;

/**
 * 
 * 描述： 创建人： 王小雷 创建时间: 2016年5月30日 16:58:19
 * 
 * @version
 */
@Controller
@RequestMapping(value = "/productinfo")
public class ProductInfoController extends BaseController {

	@Autowired
	private ProductInfoService productInfoService;
	
	@Autowired
	private CityService cityService;

	/**
	 * 
	 * 描述：跳转添加页面 创建人： 王小雷 创建时间: 2016-5-31 下午4:54:10
	 * 
	 * @version
	 */
	@RequestMapping(value = "/toaddProductInfo")
	public String toaddProductInfo(ModelMap model) {
		logger.info("--进入添加产品信息页面--");
		City city = new City();
		city.setIsDelete(0);
		List<City> list = cityService.queryAll(city);
		if(null!=list && list.size()>0){
			model.put("list", list);
		}
		return "/productinfo/addproductinfo";
	}

	/**
	 * 
	 * 描述：添加产品信息 创建人： 王小雷 创建时间: 2016-5-31 下午4:54:53
	 * 
	 * @version
	 */
	@ResponseBody
	@RequestMapping(value = "/addProductInfo")
	public Map<String, Object> addProductInfo(ProductInfo productInfo) {
		Map<String, Object> map = new HashMap<String, Object>();
		logger.info("--进入添加产品信息页面--添加产品信息：" + productInfo);
		productInfo.setCreateTime(DateUtils.getCurrentDate());
		int i = productInfoService.addSelective(productInfo);
		if (i > 0) {
			map.put("status", true);
			map.put("msg", "添加产品成功!");
		} else {
			map.put("status", false);
			map.put("msg", "添加产品失败!");
		}
		return map;
		// productInfoService.add(productInfo);
		// return "redirect:/productinfo/selectAllInfo.do";
	}

	/**
	 * 
	 * 描述：删除状态切换 创建人： 王小雷 创建时间: 2016-5-31 下午4:58:03
	 * 
	 * @version
	 */
	@RequestMapping(value = "/updelete")
	public String updelete(ProductInfo productInfo) {
		logger.info("--进入产品信息列表--服务删除状态切换：" + productInfo);
		if (productInfo.getIsDelete() == 0) {
			// 0 不删除 1删除
			productInfo.setIsDelete(1);
		} else {
			productInfo.setIsDelete(0);
		}
		productInfoService.updateByPrimaryKeySelective(productInfo);
		return "redirect:/productinfo/selectAllInfo.do";
	}

	/**
	 * 
	 * 描述：更新页面取值 创建人： 王小雷 创建时间: 2016-5-31 下午4:55:25
	 * 
	 * @version
	 */
	@RequestMapping(value = "/forwardProductInfo")
	public String forwardProductInfo(ProductInfo productInfo, ModelMap model) {
		logger.info("--进入产品信息列表--更新取值--");
		model.addAttribute("productinfo", productInfoService.queryOne(productInfo));
		City city = new City();
		city.setIsDelete(0);
		List<City> list = cityService.queryAll(city);
		if(null!=list && list.size()>0){
			model.put("list", list);
		}
		return "/productinfo/updateproductinfo";
	}

	/**
	 * 
	 * 描述：产品信息更新 创建人： 王小雷 创建时间: 2016-5-31 下午4:56:31
	 * 
	 * @version
	 */
	@ResponseBody
	@RequestMapping(value = "/upProduct")
	public Map<String, Object> upProduct(ProductInfo productInfo) {
		Map<String, Object> map = new HashMap<String, Object>();
		logger.info("--进入产品信息列表方法--更新：" + productInfo);
		int i = productInfoService.updateByPrimaryKeySelective(productInfo);
		if (i > 0) {
			map.put("status", true);
			map.put("msg", "修改产品成功!");
		} else {
			map.put("status", false);
			map.put("msg", "修改产品失败!");
		}
		return map;
		// return "redirect:/productinfo/selectAllInfo.do";
	}

	/**
	 * 
	 * 描述：启用状态切换 创建人： 王小雷 创建时间: 2016-5-31 下午4:55:57
	 * 
	 * @version
	 */
	@RequestMapping(value = "/upProductInfo")
	public String upProductInfo(ProductInfo productInfo) {
		logger.info("--进入产品信息列表方法--服务启动状态切换：" + productInfo);
		if (productInfo.getIsUse() == 0) {
			// 0 不启用 1启用
			productInfo.setIsUse(1);
		} else {
			productInfo.setIsUse(0);
		}
		productInfoService.updateByPrimaryKeySelective(productInfo);
		return "redirect:/productinfo/selectAllInfo.do";
	}

	/**
	 * 
	 * 描述：产品信息列表    创建人： 王小雷     创建时间: 2016-5-31 下午4:57:11
	 * 
	 * @version
	 * @throws UnsupportedEncodingException 
	 * 
	 */
	@RequestMapping(value = "/selectAllInfo")
	public String selectAllInfo(ModelMap model, Integer pageNo, HttpServletRequest request, String searchName, Integer searchType,String searchCity) throws UnsupportedEncodingException {
		logger.info("--进入产品信息列表方法--产品模糊查询--分页--");
		// 参数
		StringBuilder params = new StringBuilder();
		ProductInfoPageVo productInfo = new ProductInfoPageVo();
		if (null != searchName && StringUtils.isNotBlank(searchName)) {
			productInfo.setProductName(searchName);
			// searchName = new String(searchName.getBytes("ISO-8859-1"),"utf-8");
			// 拼装返回url
			params.append("searchName=").append(searchName);
		}
		
		if(null!= searchCity && StringUtils.isNotBlank(searchCity)){
			productInfo.setCityName(searchCity);
			params.append("searchCity=").append(searchCity);
		}
		
		// 根据 类型查
		if (null != searchType) {
			productInfo.setProductType(searchType);
			// 拼装返回url
			params.append("&searchType=").append(searchType);
		}
		// 如果页号为null 或小于1 设为1
		productInfo.setPageNo(Pagination.cpn(pageNo));
		productInfo.setPageSize(Constants.PAGE_SIZE);
		// productInfo.setIsUse(1);
		// productInfo.setIsDelete(0);
		Pagination pagination = productInfoService.pagelist(productInfo);

		// 分页展示
		String url = request.getContextPath() + "/productinfo/selectAllInfo.do";
		pagination.pageView(url, params.toString());
		
		City city = new City();
		city.setIsDelete(0);
		List<City> list = cityService.queryAll(city);
		if(null!=list && list.size()>0){
			model.put("list", list);
		}
		
		model.put("page", pagination);
		model.put("searchName", searchName);
		model.put("searchType", searchType);
		model.put("searchCity", searchCity);
		return "/productinfo/productinfo";
	}

	/**
	 * 
	 * 描述：是否在主页显示
	 * 创建人： 王小雷
	 * 创建时间: 2016-6-3 上午9:58:08
	 * @version
	 */
	@RequestMapping(value = "/upIndex")
	public String upIndex(ProductInfo productInfo) {
		logger.info("--是否主页显示--");
		if (productInfo.getIsUseIndex() == 0) {
			// 0 不显示 1显示
			productInfo.setIsUseIndex(1);
		} else {
			productInfo.setIsUseIndex(0);
		}
		productInfoService.updateByPrimaryKeySelective(productInfo);
		return "redirect:/productinfo/selectAllInfo.do";
	}

	/**
	 * 
	 * 描述：是否在产品中心显示
	 * 创建人： 王小雷
	 * 创建时间: 2016-6-3 上午9:59:27
	 * @version
	 */
	@RequestMapping(value = "/upCenter")
	public String upCenter(ProductInfo productInfo) {
		logger.info("--是否在产品中心显示--");
		if (productInfo.getIsUseCenter() == 0) {
			// 0 不显示 1显示
			productInfo.setIsUseCenter(1);
		} else {
			productInfo.setIsUseCenter(0);
		}
		productInfoService.updateByPrimaryKeySelective(productInfo);

		return "redirect:/productinfo/selectAllInfo.do";
	}

	/**
	 * 
	 * 描述：产品基本详情
	 * 创建人： 王小雷
	 * 创建时间: 2016-6-7 上午9:45:11
	 * @version
	 */
	@RequestMapping(value = "/productDetail")
	public String productDetail(ModelMap map, ProductInfo productInfo) {
		logger.info("--产品基本详情--");
		ProductInfo queryOne = productInfoService.queryOne(productInfo);
		map.put("detail", queryOne);
		return "/productinfo/detail";
	}
}
